Generally, software applications are programs that perform various tasks and functions such as word processing, playing digital media, video gaming, accounting, and the like.
While software applications typically reside on local computing devices (e.g., personal computers, personal digital assistants, cell phones, etc.), there is a growing trend to move software applications off local devices and into a web environment. There are many reasons for doing this including that web based software applications generally have access to a greater variety and quantity of content, and web based software applications are generally more interactive.
However, there are also practical issues with moving software applications to the web. First, web based software applications generally use an Internet connection to operate or communicate with a local device. For example, a user wishing to E-mail a friend or family member typically establishes an Internet connection, accesses a web application (e.g., Hotmail™, Gmail™, and the like), and sends the message. If the Internet connection is lost while the message is being written or sent, the message is typically lost as well.
Moreover, once an Internet connection is established, the connection maybe inadequate (e.g., slow connection) or suboptimal (e.g., connection degrades or changes over time). For example, during a typical business trip, a sales person may have broadband Internet at their office, a cellular based Internet connection while traveling to meet with a customer, and a WiFi connection at a restaurant or hotel. Each of these Internet connections offers a different level of functionality and bandwidth.
Finally, to provide the same convenience and functionality as current local software applications, current web programming models generally utilize complex layers of code.